Планировщик запросов и EXPLAIN

Цель: уметь объяснить “почему запрос медленный” на уровне:

  • доступ к данным (seq/index/bitmap),

  • join-алгоритмы,

  • сортировки/агрегации,

  • оценка кардинальности,

  • I/O и временные файлы.

Связанные темы:

Методы доступа к данным

Join-алгоритмы и сортировки

ANALYZE и статистика планировщика

Память, кэш и I/O


EXPLAIN vs EXPLAIN ANALYZE

  • EXPLAIN: план и оценки (cost/rows).

  • EXPLAIN ANALYZE: план + фактическое время и фактические строки.

Если оценки сильно расходятся с фактом ⇒ проблема статистики или неверные предположения.


Типовые “дорогие” узлы

  • Seq Scan по большой таблице без сильного фильтра.

  • Nested Loop Join при большом количестве строк.

  • Sort/GroupAggregate с выливанием на диск (temp files).

  • Hash Join с нехваткой памяти (spill).


Что важно фиксировать в заметках/тикетах (как аналитик)

  • входные параметры запроса и ожидаемую селективность,

  • примерные объёмы данных (порядок),

  • требуемые SLA/latency,

  • частоту вызова (RPS) — запрос на 200ms при 1 RPS и при 200 RPS — разные миры.

Последнее обновление